home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995 June: Reference Library / Dev.CD Jun 95 / Dev.CD Jun 95.toast / What's New? / New System Software Extensions / QuickDraw 3D ß / Programming / Interfaces / QD3DErrors.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-04-04  |  7.9 KB  |  293 lines  |  [TEXT/MPS ]

  1. /******************************************************************************
  2.  **                                                                             **
  3.  **     Module:        QD3DErrors.h                                             **
  4.  **                                                                             **
  5.  **                                                                             **
  6.  **     Purpose:    Error API and error codes                                 **
  7.  **                                                                             **
  8.  **                                                                             **
  9.  **     Copyright (C) 1992-1995 Apple Computer, Inc.  All rights reserved.     **
  10.  **                                                                             **
  11.  **                                                                             **
  12.  *****************************************************************************/
  13. #ifndef QD3DError_h
  14. #define QD3DError_h
  15.  
  16. #if PRAGMA_ONCE
  17.     #pragma once
  18. #endif
  19.  
  20. #if defined(OS_MACINTOSH) && OS_MACINTOSH
  21. #include <Types.h>
  22. #endif  /*  OS_MACINTOSH  */
  23.  
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif  /*  __cplusplus  */
  27.  
  28. /* 
  29.     TODO NAME CHANGE
  30.  */
  31. #define kQ3Error_InvalidObject kQ3ErrorInvalidObject    
  32. #define kQ3Error_ParameterOutOfRange kQ3ErrorParameterOutOfRange
  33.  
  34. /******************************************************************************
  35.  **                                                                             **
  36.  **                            Error Types and Codes                             **
  37.  **                                                                             **
  38.  *****************************************************************************/
  39.  
  40. typedef enum TQ3Error {
  41.     kQ3ErrorNone = 0,        
  42.     /* Fatal Errors */
  43.     kQ3ErrorInternalError = -28500,
  44.     kQ3ErrorNoRecovery,                    /* TODO: This is not used correctly */
  45.     kQ3ErrorLastFatalError,
  46.     /* System Errors */
  47.     kQ3ErrorNotInitialized,
  48.     kQ3ErrorAlreadyInitialized,
  49.     kQ3ErrorUnimplemented,
  50.     kQ3ErrorRegistrationFailed,
  51.     /* OS Errors */
  52.     kQ3ErrorUnixError,
  53.     kQ3ErrorMacintoshError,
  54.     kQ3ErrorX11Error,
  55.     /* Memory Errors */
  56.     kQ3ErrorMemoryLeak,
  57.     kQ3ErrorOutOfMemory,
  58.     /* Parameter errors */
  59.     kQ3ErrorNULLParameter,
  60.     kQ3ErrorParameterOutOfRange,
  61.     kQ3ErrorInvalidParameter,            /* TODO: Make this more specific */
  62.     kQ3ErrorInvalidData,                /* TODO: Is this used? */
  63.     kQ3ErrorAcceleratorAlreadySet,        /* TODO: Is this used? */
  64.     kQ3ErrorVector3DNotUnitLength,
  65.     /* Object Errors */
  66.     kQ3ErrorInvalidObject,
  67.     kQ3ErrorInvalidObjectClass,
  68.     kQ3ErrorInvalidObjectType,
  69.     kQ3ErrorInvalidObjectName,
  70.     kQ3ErrorObjectClassInUse,            
  71.     kQ3ErrorAccessRestricted,
  72.     kQ3ErrorMetaHandlerRequired,
  73.     kQ3ErrorNeedRequiredMethods,
  74.     kQ3ErrorNoSubClassType,
  75.     kQ3ErrorUnknownElementType,
  76.     kQ3ErrorNotSupported,
  77.     /* Extension Errors */
  78.     kQ3ErrorNoExtensionsFolder,
  79.     kQ3ErrorExtensionError,
  80.     kQ3ErrorPrivateExtensionError,
  81.     /* Geometry Errors */
  82.     kQ3ErrorDegenerateGeometry,
  83.     kQ3ErrorGeometryInsufficientNumberOfPoints,
  84.     /* IO Errors */
  85.     kQ3ErrorNoStorageSetForFile,
  86.     kQ3ErrorEndOfFile,
  87.     kQ3ErrorFileCancelled,
  88.     kQ3ErrorInvalidMetafile,
  89.      kQ3ErrorInvalidMetafilePrimitive,
  90.      kQ3ErrorInvalidMetafileLabel,
  91.      kQ3ErrorInvalidMetafileObject,
  92.      kQ3ErrorInvalidMetafileSubObject,
  93.     kQ3ErrorInvalidSubObjectForObject,
  94.     kQ3ErrorUnresolvableReference,
  95.     kQ3ErrorUnknownObject,
  96.     kQ3ErrorStorageInUse,
  97.     kQ3ErrorStorageAlreadyOpen,
  98.     kQ3ErrorStorageNotOpen,
  99.     kQ3ErrorStorageIsOpen,
  100.     kQ3ErrorFileAlreadyOpen,
  101.     kQ3ErrorFileNotOpen,
  102.     kQ3ErrorFileIsOpen,
  103.     kQ3ErrorBeginWriteAlreadyCalled,
  104.     kQ3ErrorBeginWriteNotCalled,
  105.     kQ3ErrorEndWriteNotCalled,
  106.     kQ3ErrorReadStateInactive,
  107.     kQ3ErrorStateUnavailable,
  108.     kQ3ErrorWriteStateInactive,
  109.     kQ3ErrorSizeNotLongAligned,
  110.     kQ3ErrorFileModeRestriction,
  111.     kQ3ErrorInvalidHexString,
  112.     kQ3ErrorWroteMoreThanSize,
  113.     kQ3ErrorWroteLessThanSize,
  114.     kQ3ErrorReadLessThanSize,
  115.     kQ3ErrorReadMoreThanSize,
  116.     kQ3ErrorSizeMismatch,
  117.     kQ3ErrorStringExceedsMaximumLength,
  118.     kQ3ErrorValueExceedsMaximumSize,
  119.     kQ3ErrorNonUniqueLabel,
  120.     kQ3ErrorUnmatchedEndGroup,
  121.     /* View errors */
  122.     kQ3ErrorViewNotStarted,
  123.     kQ3ErrorViewIsStarted,
  124.     kQ3ErrorRendererNotSet,
  125.     kQ3ErrorRenderingIsActive,
  126.     kQ3ErrorImmediateModeUnderflow,
  127.     kQ3ErrorDisplayNotSet,
  128.     kQ3ErrorCameraNotSet,
  129.     kQ3ErrorDrawContextNotSet,
  130.     kQ3ErrorNonInvertibleMatrix,
  131.     kQ3ErrorRenderingNotStarted,
  132.     kQ3ErrorPickingNotStarted,
  133.     kQ3ErrorBoundsNotStarted,
  134.     kQ3ErrorDataNotAvailable,
  135.     kQ3ErrorNothingToPop,
  136.     /* Renderer Errors */
  137.     kQ3ErrorUnknownStudioType,            /* TODO Name Change */
  138.     kQ3ErrorAlreadyRendering,
  139.     kQ3ErrorStartGroupRange,
  140.     kQ3ErrorUnsupportedGeometryType,
  141.     kQ3ErrorInvalidGeometryType,
  142.     kQ3ErrorUnsupportedFunctionality,
  143.     /* Group Errors */
  144.     kQ3ErrorInvalidPositionForGroup,
  145.     kQ3ErrorInvalidObjectForGroup,
  146.     kQ3ErrorInvalidObjectForPosition,
  147.     /* Transform Errors */
  148.     kQ3ErrorScaleOfZero,                /* Transform errors? */
  149.     /* String Errors */
  150.     kQ3ErrorBadStringType,                /* What is this? */
  151.     /* Attribute Errors */
  152.     kQ3ErrorAttributeNotContained,        /* What is this? */
  153.     kQ3ErrorAttributeInvalidType,        /* What is this? */
  154.     /* Camera Errors */
  155.     kQ3ErrorInvalidCameraValues,        /* Redundant with kQ3ErrorParameterOutOfRange */
  156.     /* DrawContext Errors */
  157.     kQ3ErrorBadDrawContextType,
  158.     kQ3ErrorBadDrawContextFlag,
  159.     kQ3ErrorBadDrawContext,
  160.     kQ3ErrorUnsupportedPixelDepth,
  161.     kQ3ErrorLastError
  162. } TQ3Error;
  163.  
  164. typedef enum TQ3Warning {
  165.     kQ3WarningNone = 0,
  166.     /* General System */
  167.     kQ3WarningInternalException = kQ3ErrorLastError + 1,    
  168.     /* Object Warnings */
  169.     kQ3WarningNoObjectSupportForDuplicateMethod,
  170.     kQ3WarningNoObjectSupportForWriteMethod,
  171.     kQ3WarningNoObjectSupportForReadMethod,
  172.     kQ3WarningNoObjectSupportForDrawMethod,
  173.     kQ3WarningUnknownElementType,
  174.     kQ3WarningTypeAndMethodAlreadyDefined,
  175.     kQ3WarningTypeIsOutOfRange,
  176.     kQ3WarningTypeHasNotBeenRegistered,
  177.     kQ3WarningInvalidSubObjectForObject,
  178.     kQ3WarningInvalidHexString,
  179.     kQ3WarningUnknownObject,
  180.     kQ3WarningInvalidTableOfContents,
  181.     kQ3WarningUnresolvableReference,
  182.     kQ3WarningNoAttachMethod,
  183.     kQ3WarningInconsistentData,
  184.     /* IO Warnings */
  185.     kQ3WarningFilePointerResolutionFailed,
  186.     kQ3WarningStringExceedsMaximumLength,
  187.     /* Memory Warnings */
  188.     kQ3WarningLowMemory,
  189.     kQ3WarningPossibleMemoryLeak,
  190.     /* View Warnings */
  191.     kQ3WarningViewTraversalInProgress,
  192.     kQ3WarningNonInvertibleMatrix,
  193.     /* Quaternion Warning */
  194.     kQ3WarningQuaternionEntriesAreZero,
  195.     /* Renderer Warning */
  196.     kQ3WarningFunctionalityNotSupported,
  197.     /* DrawContext Warning */
  198.     kQ3WarningInvalidPaneDimensions,
  199.     /* Pick Warning */
  200.     kQ3WarningPickParamOutside,
  201.     kQ3WarningLastWarning
  202. } TQ3Warning;
  203.  
  204.  
  205. typedef enum TQ3Notice {
  206.     kQ3NoticeNone = 0,
  207.     kQ3NoticeDataAlreadyEmpty = kQ3WarningLastWarning + 1,
  208.     /* General */
  209.     kQ3NoticeMethodNotSupported,
  210.     kQ3NoticeObjectAlreadySet,
  211.     /* IO Notices */
  212.     kQ3NoticeFileAliasWasChanged,
  213.     /* Geometry */
  214.     kQ3NoticeMeshVertexHasNoComponent,
  215.     kQ3NoticeMeshInvalidVertexFacePair,
  216.     kQ3NoticeMeshEdgeVertexDoNotCorrespond,
  217.     kQ3NoticeMeshEdgeIsNotBoundary,
  218.     /* Draw Context */
  219.     kQ3NoticeDrawContextNotSetUsingInternalDefaults,
  220.     /* Lights */
  221.     EcNotice_InvalidAttenuationTypeUsingInternalDefaults
  222. } TQ3Notice;
  223.  
  224. typedef void (*TQ3ErrorMethod)(
  225.     TQ3Error        firstError,
  226.     TQ3Error        lastError,
  227.     long        reference);
  228.     
  229. typedef void (*TQ3WarningMethod)(
  230.     TQ3Warning    firstWarning,
  231.     TQ3Warning    lastWarning,
  232.     long        reference);
  233.  
  234. typedef void (*TQ3NoticeMethod)(
  235.     TQ3Notice    firstNotice,
  236.     TQ3Notice    lastNotice,
  237.     long        reference);
  238.  
  239. /******************************************************************************
  240.  **                                                                             **
  241.  **                                Error Routines                                 **
  242.  **                                                                             **
  243.  *****************************************************************************/
  244.  
  245. EXPORT TQ3Status Q3Error_Register(
  246.     TQ3ErrorMethod        errorPost,
  247.     long                reference);
  248.  
  249. EXPORT TQ3Status Q3Warning_Register(
  250.     TQ3WarningMethod        warningPost,
  251.     long                reference);
  252.  
  253. EXPORT TQ3Status Q3Notice_Register(
  254.     TQ3NoticeMethod        noticePost,
  255.     long                reference);
  256.  
  257. /*
  258.  * Getting error codes -
  259.  *    Clears error type on next entry into system (except all of these error calls),
  260.  *    and returns the last error, and optionally the first error. The parameter to
  261.  *    these "_Get" calls may be NULL.
  262.  */
  263. EXPORT TQ3Error Q3Error_Get(
  264.     TQ3Error            *firstError);
  265.  
  266. EXPORT TQ3Boolean Q3Error_IsFatalError(
  267.     TQ3Error            error);
  268.  
  269. EXPORT TQ3Warning Q3Warning_Get(
  270.     TQ3Warning        *firstWarning);
  271.  
  272. EXPORT TQ3Notice Q3Notice_Get(
  273.     TQ3Notice        *firstNotice);
  274.  
  275. #if defined(OS_MACINTOSH) && OS_MACINTOSH
  276.  
  277. EXPORT OSErr Q3MacintoshError_Get(
  278.     OSErr            *firstMacErr);
  279.  
  280. #endif
  281.  
  282. EXPORT int Q3UnixError_Get(
  283.     int                *firstUnixError);
  284.  
  285. EXPORT int Q3X11Error_Get(
  286.     int                *firstX11error);
  287.  
  288. #ifdef __cplusplus
  289. }
  290. #endif  /*  __cplusplus  */
  291.  
  292. #endif    /*  QD3DError_h  */
  293.